package cn.xopencode.appletweb.controller.permission;

import cn.xopencode.common.framework.util.StringUtils;
import cn.xopencode.common.framework.vo.CommonResult;
import cn.xopencode.common.framework.vo.PageResult;
import cn.xopencode.oss.rpc.permission.PositionRpc;
import cn.xopencode.oss.rpc.permission.dto.PositionCreateDTO;
import cn.xopencode.oss.rpc.permission.dto.PositionPageDTO;
import cn.xopencode.oss.rpc.permission.dto.PositionUpdateDTO;
import cn.xopencode.oss.rpc.permission.vo.PositionVO;
import cn.xopencode.security.annotations.RequiresNone;
import cn.xopencode.security.annotations.RequiresPermissions;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.*;
import static cn.xopencode.common.framework.vo.CommonResult.success;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;

@Api(tags = "员工职务 API")
@RestController
@RequestMapping("/position")
public class PositionController {
    @DubboReference(version = "${dubbo.consumer.PositionRpc.version}")
    private PositionRpc positionRpc;
    @PostMapping("/create")
    @ApiOperation("创建职务")
    //@RequiresPermissions("oss:position:create")
    @RequiresNone
    public CommonResult<String> createPosition(@Valid PositionCreateDTO createDTO) {

        return success(StringUtils.uuid(true),"名称为："+createDTO.getPostName()+"的职务创建成功");
    }
    @PostMapping("/update")
    @ApiOperation("更新角色")
    //@RequiresPermissions("oss:position:update")
    @RequiresNone
    public CommonResult<Boolean> updatePosition(@Valid PositionUpdateDTO updateDTO) {
        return success(true,"ID为"+updateDTO.getId()+",名称为"+updateDTO.getPostName()+"的职务更新成功");
    }

    @PostMapping("/delete")
    @ApiOperation("删除职务")
    @ApiImplicitParam(name = "positionId", value = "职务编号", required = true)
    //@RequiresPermissions("oss:position:delete")
    @RequiresNone
    public CommonResult<Boolean> deletePosition(@RequestParam("positionId") String positionId) {
        return success(true,"ID为"+positionId+"的职务删除成功");
    }

    @GetMapping("/get")
    @ApiOperation("查询职务")
    @ApiImplicitParam(name = "positionId", value = "职务编号", required = true)
    //@RequiresPermissions("oss:position:page")
    @RequiresNone
    public CommonResult<PositionVO> position(@RequestParam("positionId") String positionId) {
        return success(new PositionVO().setId(StringUtils.uuid(true)).setPostName("班组长"));
    }

    @GetMapping("/list-all")
    @ApiOperation("获得所有职务列表")
    //@RequiresPermissions("oss:position:page")
    @RequiresNone
    public CommonResult<List<PositionVO>> listAllPositions() {
        List<PositionVO> positionVOS=new ArrayList<>();
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("一车间安全员"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("二车间安全员"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("三车间安全员"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("四车间安全员"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("五车间安全员"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("六车间安全员"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("七车间安全员"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("一车间班组长"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("二车间班组长"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("三车间班组长"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("四车间班组长"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("五车间班组长"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("六车间班组长"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("七车间班组长"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("销售总监"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("办公室主任"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("人事处长"));
        return success(positionVOS);
    }

    @GetMapping("/list")
    @ApiOperation("获得职务列表")
    @ApiImplicitParam(name = "positionIds", value = "职务编号列表", required = true)
    //@RequiresPermissions("oss:position:page")
    @RequiresNone
    public CommonResult<List<PositionVO>> listPositions(@RequestParam("positionIds") List<String> positionIds) {
        List<PositionVO> positionVOS=new ArrayList<>();
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("六车间安全员"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("七车间安全员"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("一车间班组长"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("二车间班组长"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("三车间班组长"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("销售总监"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("办公室主任"));
        positionVOS.add(new PositionVO().setId(StringUtils.uuid(true)).setPostName("人事处长"));
        return success(positionVOS);
    }

    @GetMapping("/page")
    @ApiOperation("获得职位分页")
    //@RequiresPermissions("oss:position:page")
    @RequiresNone
    public CommonResult<PageResult<PositionVO>> pageRole(PositionPageDTO pageDTO) {
        return positionRpc.pagePosition(pageDTO);
    }

}
